This invention relates generally to the recognition and interpretation of the operational and control signals used by a computer system microprocessor, by its peripheral chips, and, more specifically, to providing peripheral chips that operate with several different types of microprocessors having various signaling protocols.
For several years after first making, in the mid-1970s, a complete microprocessor ("MPU") on a single integrated circuit chip, semiconductor manufacturers attempted to provide a complete family of peripheral circuit chips to be used with their microprocessors. Such peripheral chips typically function to provide parallel input-output, serial input-output, interface with system memory, memory management, direct memory access ("DMA") control, event counting and timing circuits, high speed numerical processing, and various other similar functions that need to be provided along with the MPU in order to form a complete computer system. In the beginning of microprocessor-based system technology, semiconductor manufacturers designed their own techniques and signal protocols for controlling operation of the peripheral circuits from the microprocessor. Although these techniques had many common aspects, they also had many differences that prevented a peripheral circuit of one semiconductor manufacturer from working with a microprocessor of another, or at least without the addition of translation or "glue" logic between them.
Over time, as the number of types of peripheral circuits being provided increased dramatically, along with an increasing number of microprocessor types, it became impossible for any single semiconductor manufacturer to provide a full line of peripherals for all of its own microprocessors. Also, as certain peripheral parts became popular because of better designs and more complete functions, computer system designers began to use peripheral devices of one semiconductor manufacturer family with a microprocessor of another. The trend lately has been for semiconductor manufacturers to design both microprocessors that can be more easily interfaced to an increasing number of peripheral devices, and to also design peripheral devices that can be more easily used with a variety of microprocessors from different manufacturers.
Each popular microprocessor still has its own particular interfacing requirements, including specific signal protocols, but there is a considerable commonality between them and the differences are now well defined. Examples of such differences include the use by some microprocessors of an 8-bit wide data bus and use by others of a 16-bit wide data bus. In the case of a 16-bit wide data bus, some microprocessors use the least significant address line (A0) to designate which half of the bus is being used to transfer a single byte of data, along with a single data strobe to transfer that byte, while other microprocessors use separate data strobes for transferring bytes on the lower and upper byte data bus lines. Further, microprocessors that so utilize the A0 line do so with different polarities.
Another example difference among microprocessors in communicating with peripheral devices is in designating whether data is to be written from the data bus to the peripheral device or read from it. In one arrangement, separate read and write strobe signals are provided. In another arrangement, one signal is provided to designate whether a read or write operation is to take place, and another signal acts as a data strobe to implement that operation. In the latter protocol, microprocessors also differ in the polarities used to designate the read-write control signal.
Another difference in control signal protocols among microprocessors is in the way they match the speed of their operation to that of the peripheral device. A peripheral circuit often needs to delay and slow down the operation of the microprocessor to allow the peripheral enough time to capture write data or provide read data asked of it by the microprocessor. Typical situations where this occurs is when the peripheral device is unable to provide read data to the microprocessor within the time required to maintain full speed operation of the microprocessor, or when the peripheral device is unable to accept and capture write data provided by the microprocessor quickly enough to allow the microprocessor to move on to its next operation at its full speed. Two alternative techniques have emerged for allowing the peripheral device to slow down the microprocessor in such circumstances. One method is for the peripheral device to emit a WAIT signal as soon as it recognizes that it is not going to be able to complete its designated task before the microprocessor will want to move on to its next operation. An alternative technique is for the peripheral device to emit an acknowledge (ACK) signal when it begins to perform an operation requested of it by the microprocessor and then terminate that signal when the task has been completed. Some microprocessors utilize one of these protocols, and others utilize the other protocol.
One early technique to provide a peripheral device to operate with microprocessors using any of such different signaling protocols was to provide a separate pin for each different signal and protocol, circuits then being provided as part of the peripheral device to utilize any of them. A given microprocessor was then connected with the appropriate pins of the peripheral device depending upon the microprocessors control signals and their protocols. Because higher pin counts and larger packages increase costs, such an approach requiring provision of redundant, unused pins is not often used.
Another technique currently used in peripheral devices for adapting them to various microprocessors utilizes a control register having fields whose bits determine which among various signaling protocols is to be used on a group of control signal pins. The control register is loaded each time the computer system in which the peripherals are used is initialized or reset. This technique is limited in its flexibility in that the operation of loading the control register is itself accomplished using at least some of the control signals being defined.
It is a primary object of the present invention to provide a technique that allows a peripheral device to automatically adapt to various types of microprocessor control signals and protocols, thereby to avoid having to use separate, redundant pins and avoiding the necessity of programming control register fields for this purpose.